#include <REG51.H>
#include <Key.h>

sbit Key0 = P1 ^ 0; // 功能选择键/确认键
sbit Key1 = P1 ^ 1; // 调时减/秒表开始/秒表暂停
sbit Key2 = P1 ^ 2; // 调时加/秒表停止

/**
 * @brief  按键初始化
 * @param  None
 * @retval None
 */
void Key_init(void)
{
    Key0 = 1;
    Key1 = 1;
    Key2 = 1;
}

/**
 * @brief  按键扫描，返回按键的状态。
 *         当有按键同时按下时，有判定的优先级，Key0最高，Key2最低。
 * @param  None
 * @retval 返回值为 Key_NO_Down / Key0_Down / Key1_Down / Key2_Down
 */
KeyStatus_TypeDef Key_Scan(void)
{
    if (Key0 == 0)
    {
        while (Key0 == 0) // 等待按键松开
            ;
        return Key0_Down;
    }
    if (Key1 == 0)
    {
        while (Key1 == 0) // 等待按键松开
            ;
        return Key1_Down;
    }
    if (Key2 == 0)
    {
        while (Key2 == 0) // 等待按键松开
            ;
        return Key2_Down;
    }

    // 没有按键按下
    return Key_NO_Down;
}
